iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Mobile Development

IOS新手之旅系列 第 2

IOS新手之旅 Day2:碼表(1)

  • 分享至 

  • xImage
  •  

作為一個剛接觸Swift的新手,仿刻IOS內建的鬧鐘似乎是個不錯的開始,而鬧鐘裡面又分成四種功能:鬧鐘,世界時鐘,計時器以及碼表。

其中,個人認為難易度最低的應該是碼表,那麼今天我們就從碼表開始練習吧,首先就是將需要用到的UI加入畫面,同時拉好UI的layout,不然跑版了就不好看了,拉好之後大概像這樣,上面一個Label,中間兩個Button,最下面是TableView。

拉完UI後,我們就可以開始製作功能了,首先是負責控制的兩個Button,兩個Button在不同的情況下會有不同的功能。

開始與暫停

這裡我是用兩個變數來代表兩個Button的狀態,搭配if來切換功能,同時另一個Button的狀態也會跟著切換。

然後是Timer的設定,這裡設每0.01秒執行一次Timer裡的函式。

    @IBOutlet weak var stopWatchLabel: UILabel!
    @IBOutlet weak var startLapButton: UIButton!
    @IBOutlet weak var lapButton: UIButton!
    @IBOutlet weak var lapTableView: UITableView!

    var startStauts = true
    var lapStauts = false
    var milliSeconds = 0
    var timer = Timer()
    var stopWatchs = [String]()
    
    @IBAction func startOrStop(_ sender: Any) {
        if startStauts {
            startStauts = false
            lapStauts = true
            
            startLapButton.setTitle("Pause", for: .normal)
            startLapButton.setTitleColor(.red, for: .normal)
            
            lapButton.setTitle("Lap", for: .normal)
            lapButton.setTitleColor(.black, for: .normal)
            lapButton.isEnabled = true
            
            timer = Timer.scheduledTimer(timeInterval: TimeInterval(0.01), target: self, selector: #selector(countDown), userInfo: nil, repeats: true)
        }else{
            startStauts = true
            lapStauts = false
            
            startLapButton.setTitle("Start", for: .normal)
            startLapButton.setTitleColor(.green, for: .normal)
            
            lapButton.setTitle("Reset", for: .normal)
            lapButton.setTitleColor(.black, for: .normal)
            
            timer.invalidate()
        }
    }

Timer的功能

這裡是計算時間,計算的方式是每毫秒+1,同時將時間進行分別處理成時分秒還有毫秒之後顯示出來。

    var calcuMilSec = 0
    var calcuSec = 0
    var calcuMin = 0
    var calcuHor = 0
    
    @objc func countDown(){
        milliSeconds += 1
        
        calcuMilSec = milliSeconds % 100
        calcuSec = (milliSeconds / 100) % 60
        calcuMin = (milliSeconds / 6000) % 60
        calcuHor = (milliSeconds / 360000) % 24
        
        stopWatchLabel.text = String(format: "%02d:%02d:%02d.%02d", arguments: [calcuHor, calcuMin, calcuSec, calcuMilSec])
    }

到這裡就是今天的進度了,明天再來完成另一個Button的功能以及一些問題的處理。


上一篇
IOS新手之旅 Day1:建立Xib檔案
下一篇
IOS新手之旅 Day3:碼表(2)
系列文
IOS新手之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言